﻿using CommonModel;
using System;
using System.Collections.Generic;

namespace IBll
{
    /// <summary>
    /// 缓存服务接口
    /// </summary>
    public interface ICacheBll : IDependency
    {
        #region 增加

        /// <summary>
        /// 增加一个缓存对象（永不过期）
        /// </summary>
        bool Add<T>(string key, T value);

        /// <summary>
        /// 增加一个缓存对象（自定义过期时间）
        /// </summary>
        bool Add<T>(string key, T value, DateTime expireTime);

        #endregion

        #region 删除

        /// <summary>
        /// 删除一个缓存对象
        /// </summary>
        bool Remove(string key);

        /// <summary>
        /// 删除一组缓存对象
        /// </summary>
        bool Remove(List<string> keys);

        /// <summary>
        /// 删除所有缓存对象
        /// </summary>
        bool Remove();

        #endregion

        #region 修改

        /// <summary>
        /// 修改一个缓存对象
        /// </summary>
        bool Update<T>(string key, T value);

        #endregion

        #region 查询

        /// <summary>
        /// 查询当前缓存数
        /// </summary>
        int GetCount();

        /// <summary>
        /// 是否存在对应Key值的缓存对象
        /// </summary>
        bool IsExists(string key);

        /// <summary>
        /// 获取该key值对应的缓存对象
        /// </summary>
        T GetCache<T>(string key);

        #endregion
    }
}
